package nespresso.servlets;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.*;

import nespresso.beans.*;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class LignenewServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public LignenewServlet() {
	}

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		/*
		 * si l'utilisateur tape l'adresse de la servlet directement dans la barre d'adresse, il est renvoyé
		 * sur la page d'accueil !
		 */
		response.sendRedirect("nespresso.jsp");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// on ouvre une session pour y mettre nos objets et pour protéger les pages
		HttpSession session  = request.getSession();
		User currentUser = (User)session.getAttribute("user");
		Commande c = (Commande)session.getAttribute("commande");
		String dispatch = new String((c.GetId().equals("-NEW-")) ? "commandenew.jsp" : "lignescommande.jsp");
		Ligne l = new Ligne();
		
		// on récupère la valeur du bouton de validation
		String bvalide = request.getParameter("BValideLigne");
		if(bvalide.equals("Retour")) response.sendRedirect(dispatch);
		else {
			if(bvalide.equals("Ajouter")) {
				String[] zecap = request.getParameterValues("capsules");
				String nbcap = request.getParameter("nbcapsules");
				if(!currentUser.getRole().equals("ADMIN")) l.SetIduser(currentUser.getId());
				else {
					String[] zeuser = request.getParameterValues("s_user");
					l.SetIduser(zeuser[0]);
				}
				l.SetIdcapsule(zecap[0]); // On modifie l'objet "ligne" pour lui indiquer la nouvelle capsule
				l.SetNbcapsule(Integer.parseInt(nbcap));
				l.SetId("-NEW-");
				Base cap = new Base(); // On recherche le prix unitaire des capsules...
				cap.GetResultat("capsules", "id", zecap[0]); cap.Suivant();
				l.SetMontant(l.GetNbcapsule() * cap.GetReel("prix")); // ... pour le calcul du montant de la ligne
				l.SetIdcommande(c.GetId());
				cap.Free();
				if(c.GetId().equals("-NEW-")) c.AddLignenew(l);
				else c.AddLigne(l);
				c.UpdateCommande();
				RequestDispatcher reqDispatcher = getServletConfig().getServletContext().getRequestDispatcher("/"+dispatch);
				reqDispatcher.forward(request,response);
    		}
		}
    	    	
	}

}
